
package com.hlkj.pay.app.order;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import java.util.List;

import javax.validation.Valid;

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.pay.enums.PayOrderEnums;
import com.hlkj.pay.infrastructure.model.order.PayOrderDO;
import com.hlkj.pay.vo.openapi.order.resp.AcctPayOrderApiResp;
import com.hlkj.pay.vo.openapi.order.resp.AcctRefundOrderApiResp;
import com.hlkj.pay.vo.order.req.AcctOrderQueryParamReq;
import com.hlkj.pay.vo.order.req.AcctPayOrderParamReq;
import com.hlkj.pay.vo.order.req.AcctRefundOrderParamReq;
import com.hlkj.pay.vo.order.resp.acct.AcctPayOrderResp;

/**
 * @author HlpayTeam
 * @date 2024/10/09 13:50
 */
public interface IAcctOrderAppService {
    /**
     *
     * @param paramReqParams
     * @return
     */

    CommonResult<AcctPayOrderApiResp> submitAcctOrder(@Valid AcctPayOrderParamReq paramReqParams);

    /**
     *
     * @param paramReqParams
     * @return
     */
    CommonResult<AcctRefundOrderApiResp> refundAcctOrder(@Valid AcctRefundOrderParamReq paramReqParams);

    /**
     *
     * @param paramReqParams
     * @return
     */
    CommonResult<AcctPayOrderResp> queryAcctOrder(AcctOrderQueryParamReq paramReqParams);

    /**
     *
     * @param paramReqParams
     * @return
     */
    CommonResult<AcctRefundOrderApiResp> queryRefundAcctOrder(AcctOrderQueryParamReq paramReqParams);

    /**
     *
     * @param acctOrderQueryParamReq
     * @return
     */
    CommonResult<AcctPayOrderResp> finishAcctOrder(AcctOrderQueryParamReq acctOrderQueryParamReq);
    /**
     *
     * @param payOrderDO
     */
    void payAcctOrder(PayOrderDO payOrderDO);


    CommonResult<String> delAcctDetail(String batchNoDetail);

    /**
     *
     */
    void syncPayAcctOrderStatus();

    void updatePayFundStatus(Long id, PayOrderEnums.PAY_ORDER_FUND_STATUS payOrderFundStatus);

    /**
     *
     */
    void syncRefundAcctOrderStatus();

    void syncDelayAcctOrderStatus();

    CommonResult<String> settleConfirm(List<String> payOrderNos);


}
